#include <iostream>
#include <vector>
using namespace std;
void getCoin(vector<long long> &coins, long long &sum) {
  int index = -1;
  int mini = 0;
  for (int i = 0; i < coins.size(); i ++) {
    if (coins[i] <= sum) {
      if (index == -1 || coins[i] > coins[index]) {
        index = i;
      }
    }
    if (coins[i] < coins[mini]) {
      mini = i;
    }
  }
  if (index == -1) index = mini;
  sum += coins[index];
  coins.erase(coins.begin() + index);
}
int main() {
  int n;
  cin >> n;
  vector<long long> coins(n);
  for (auto& x: coins) cin >> x;
  long long a = 0, b = 0;
  while (!coins.empty()) {
    getCoin(coins, a);
    if (coins.empty()) break;
    getCoin(coins, b);
  }
  cout << a << ' ' << b << endl;
  // vector<int> p1, p2;
  // vector<vector<long long>> players(2);
  // int currentPlayer = 0;
  // while (!coins.empty()) {
  //   auto& player = players[currentPlayer];
  //   currentPlayer = (currentPlayer + 1) % 2;
  //   long long sum = 0;
  //   for (auto& x: player) sum += x;
  //   int index = -1;
  //   int mini = 0;
  //   for (int i = 0; i < coins.size(); i ++) {
  //     if (coins[i] <= sum) {
  //       if (index == -1 || coins[i] > coins[index]) {
  //         index = i;
  //       }
  //     }
  //     if (coins[i] < coins[mini]) {
  //       mini = i;
  //     }
  //   }
  //   if (index != -1) {
  //     player.push_back(coins[index]);
  //     coins.erase(coins.begin() + index);
  //   } else {
  //     player.push_back(coins[mini]);
  //     coins.erase(coins.begin() + mini);
  //   }
  // }
  // for (auto& player: players) {
  //   long long sum = 0;
  //   for (auto& x: player) sum += x;
  //   cout << sum << ' ';
  // }
  // cout << endl;
}